CFLAGS=-W -Wall
BIN=./bin
OBJ=./obj
SRC=./src

EXEC= $(OBJ) $(BIN) $(BIN)/client_debug

#	Gestion de debug. necessite de passer l'argument DEBUG=true ou DEBUG=1
ifneq ($(DEBUG),true)
EXEC+= $(BIN)/client
endif

#	Gestion de GDB. necessite de passer l'argument GDB=true
ifeq ($(GDB),true)
CFLAGS+=-g
endif

all: $(EXEC)

#	Creation des executables
$(BIN)/client: $(OBJ)/client.o $(OBJ)/fonctionsTCP.o
	gcc -o $@ $^
$(BIN)/client_debug: $(OBJ)/client_d.o $(OBJ)/fonctionsTCP.o
	gcc -o $@ $^

#	Creation des fichiers objets
$(OBJ)/%_d.o: $(SRC)/%.c
	gcc -c -o $@ $< $(CFLAGS) -DDEBUG=1
$(OBJ)/%.o: $(SRC)/%.c
	gcc -c -o $@ $< $(CFLAGS)


#	Creation des dossiers
$(BIN):
	mkdir $(BIN)
$(OBJ):
	mkdir $(OBJ)

clean:
	rm -rf $(OBJ)
	
mrproper: clean
	rm -rf $(BIN)

rebuild: mrproper all

info: 
	@echo -e "USAGE:\tmake [GOAL] [DEBUG=true] [GDB=true]\n\nGOAL:\n\tall:\t\tconstruit le fichier $(BIN)/client\n\tclean:\t\tsupprime le repertoire $(OBJ)\n\tmrproper:\tsupprime les repertoires $(OBJ) et $(BIN)\n\tinfo:\taffiche cette aide\n\nOPTIONS:\n\tDEBUG:\tcompile avec des instructions pour le debug\n\tGDB:\tcompile pour l'utilisation de gdb"
